package tests;

import static org.junit.Assert.*;

import org.junit.Test;

import excepciones.ExcepcionCantidadDeTarjetasAmarillasIncorrecta;

import programa.DatosDeUnaFechaDeUnJugador;

public class TestsDatosDeUnaFechaDeUnJugador{
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorElPuntajeDelPartidoDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechDeUnJugador.obtenerPuntajeDelPartido() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorLaCantidadDeGolesAfavorDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesDeJugadaAfavorRealizados() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorLaCantidadDeGolesDePenalDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesDePenalRealizados() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorLaCantidadDePenalesErradosDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDePenalesErrados() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorLaCantidadDeGolesEnContraDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesEnContraRealizados() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorLaCantidadDeTarjetasAmarillasDeberiaSerCero(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeTarjetasAmarillas() == 0);
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorElJugadorNoDeberiaEstarExpulsado(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertFalse(unosDatosDeUnaFechaDeUnJugador.jugadorFueExpulsado());
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearUnosDatosDeUnaFechaDeUnJugadorElJugadorNoDeberiaSerFigura(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertFalse(unosDatosDeUnaFechaDeUnJugador.jugadorFueFigura());
		
	}
	
	//****************************************************************************
	
	@Test
	public void testAlCrearDatosDeUnaFechaDeUnJugadorElJugadorNoDeberiaSerChenemigo(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		assertFalse(unosDatosDeUnaFechaDeUnJugador.jugadorFueChenemigo());
		
	}
	
	//****************************************************************************
	
	@Test
	public void testElPuntajeDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 1; i < 10; i++){
			
			unosDatosDeUnaFechaDeUnJugador.jugadorRecibioPuntaje(i);
			
			assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerPuntajeDelPartido() == i);
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testLaCantidadDeGolesAfavorDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 1; i < 10; i++){
			
			unosDatosDeUnaFechaDeUnJugador.jugadorHizoCantidadDeGolesDeJugadaAfavor(i);
			
			assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesDeJugadaAfavorRealizados() == i);
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testLaCantidadDeGolesDePenalDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 1; i < 10; i++){
			
			unosDatosDeUnaFechaDeUnJugador.jugadorHizoCantidadDeGolesDePenal(i);
			
			assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesDePenalRealizados() == i);
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testLaCantidadDePenalesErradosDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 1; i < 10; i++){
			
			unosDatosDeUnaFechaDeUnJugador.jugadorErroCantidadDePenales(i);
			
			assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDePenalesErrados() == i);
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testLaCantidadDeGolesEnContraDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 1; i < 10; i++){
			
			unosDatosDeUnaFechaDeUnJugador.jugadorHizoCantidadDeGolesEnContra(i);
			
			assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeGolesEnContraRealizados() == i);
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testSiElJugadorSalioFiguraDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		unosDatosDeUnaFechaDeUnJugador.jugadorSalioFigura();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.jugadorFueFigura());
		
	}
	
	//****************************************************************************
	
	@Test
	public void testSiElJugadorSalioChenemigoDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		unosDatosDeUnaFechaDeUnJugador.jugadorSalioChenemigo();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.jugadorFueChenemigo());
		
	}
	
	//****************************************************************************

	@Test
	public void testLaCantidadDeTarjetasAmarillasDeberianAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = 0; i < 3; i++){
		
			try{
				
				unosDatosDeUnaFechaDeUnJugador.jugadorObtuvoCantidadDeTarjetasAmarillas(i);
				
				assertTrue(unosDatosDeUnaFechaDeUnJugador.obtenerCantidadDeTarjetasAmarillas() == i);
				
			}catch(ExcepcionCantidadDeTarjetasAmarillasIncorrecta miExcepcion){
				
				fail();
				
			}
			
		}
		
	}
	
	//************************************************************************
	
	public void testSiLaCantidadDeTarjetasAmarillasEsIncorrectaDeberiaLanzarUnaExcepcion(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		for(int i = -10000; i < 10000; i++){
			
			if(i < 0 || i > 2){
				
				try{
					
					unosDatosDeUnaFechaDeUnJugador.jugadorObtuvoCantidadDeTarjetasAmarillas(i);
					fail();
					
					
				}catch(ExcepcionCantidadDeTarjetasAmarillasIncorrecta miExcepcion){
					
					assertFalse(false);
					
				}
				
			}
			
		}
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiElJugadorFueExpulsadoDeberiaAsignarseCorrectamente(){
		
		DatosDeUnaFechaDeUnJugador unosDatosDeUnaFechaDeUnJugador = new DatosDeUnaFechaDeUnJugador();
		
		unosDatosDeUnaFechaDeUnJugador.jugadorSalioExpulsado();
		
		assertTrue(unosDatosDeUnaFechaDeUnJugador.jugadorFueExpulsado());
		
	}
	
	//************************************************************************
	
}
